#小组作业
#针对某一页内容进行爬虫
import requests,csv
from bs4 import BeautifulSoup
#<---定义网页，得到网页对应的需要抓取的标签信息--->
def content(page):
    url='https://sh.lianjia.com/zufang/pg%s/'%page  #由总控制程序控制
    r=requests.get(url)
    demo=r.text
    soup=BeautifulSoup(demo,'lxml')
    content=soup.find_all('div',class_='content__list--item--main')
    return content

lst_totall=[]  #整体写入时可以这样使用，但是编码过程中发现的问题无法得到快速解决

#下面需要考虑的问题是，不同页的内容如何截取？每一页写入文件，怎样保证数据不被覆盖？
#每页分别写入，需要用到函数
deep=int(input('选择你要获取租房信息的页面个数:'))
for i in range(1,deep+1):
    page=i
    content(page)

    #<----开始截取每页信息--->
    for i in content(page):
        lst=[]
        detail_twoline=i.find('p',class_='content__list--item--title twoline').get_text(strip=True)
        lst.append(detail_twoline)  #第1列，标题完成

        #这里开始截取href地址
        href=i.select('a')[0]['href']
        #print(href)
        lst.append(href)   #第2列，网页地址完成
        #print(lst)

        #针对des这块，需要进行一些数据处理再添加进列表中，可以单独写成函数使用
        detail_des=i.find('p',class_='content__list--item--des').get_text(strip=True)
        revi=detail_des.split('/')  #重新整理des信息
        #print(revi)
        revi_adr=revi[0].split('-')  #以下是剥离出地址代码
        #print(revi_adr)
        revi_adr_s=revi_adr[:2]
        #print(revi_adr_s)
        revi_adr_1='-'.join(revi_adr_s)
        #print(revi_adr_1)
        lst.append(revi_adr_1)    #第3列，地址完成

        lst.extend(revi[1:4])   #第4/5/6列，面积、朝向、格局完成
        #print(lst)

        revi_floor=revi[4].split()   #这里重新整理并且得到了要的楼层格式
        #print(revi_floor)
        lst.extend(revi_floor)   #第7列，楼层完成
        #print(lst)

        detail_price=i.find('span',class_='content__list--item-price').get_text(strip=True)
        #print(detail_price)
        lst.append(detail_price)  #第8列，价格完成

        detail_oneline=i.find('p',class_='content__list--item--bottom oneline').get_text(strip=True)
        lst.append(detail_oneline)   #第9列，看房信息完成  
        #print(lst)
        #<----到这里，csv文件，每一行的内容全部得到了---->
        lst_totall.append(lst)
        print(lst_totall)
        #到这里，需要用csv进行读写看下效果如何
    with open('lianjia.csv','w',newline='')as f:
        f_csv=csv.writer(f)
        f_csv.writerow(['标题','网址','区域','面积','朝向','房型','楼层1','楼层2','月租','看房信息'])
        for item in lst_totall:
            f_csv.writerow(item)
    #<----到这里，每一页的内容已经写入到文件中--->